package com.yxw.yxnet_cd_center.customer_service.service;

import com.yxw.yxnet_cd_center.customer_service.dto.CustomOperateQueryDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.ProductQueryDTO;
import com.yxw.yxnet_cd_center.customer_service.dto.CustomOperateDTO;
import com.yxw.yxnet_cd_center.common.dto.PageVO;
import com.yxw.yxnet_cd_center.customer_service.entity.YxCsOperateProductEntity;
import com.yxw.yxnet_cd_center.customer_service.entity.YxCsOperatePushCustEntity;
import com.yxw.yxnet_cd_center.customer_service.entity.YxCsPushProductEntity;
import com.yxw.yxnet_cd_center.customer_service.vo.CustomOperateVO;

import java.util.List;

/**
 *  客户运营Service接口
 *
 * @author xiexuxin
 * @date 2023-09-24
 */
public interface ICustomOperateService {

    /**
     * 新建运营项目
     * @return
     */
    void addCustomOperate(CustomOperateDTO operateDTO);

    /**
     * 根据id删除客户运营数据
     *
     * @param operateId 部门主键
     */
    void deleteByOperateId(Long operateId);

    /**
     * 批量删除客户运营数据
     *
     * @param operateIds 需要删除的数据主键集合
     */
    void deleteByOperateIds(List<Long> operateIds);

    /**
     * 编辑客户运营数据
     * @param operateId
     * @param operateDTO
     */
    void updateOperate(Long operateId, CustomOperateDTO operateDTO);

    /**
     * 根据id查询客户运营数据详情
     * @param operateId
     * @return
     */
    CustomOperateVO selectOperateById(Long operateId);

    /**
     * 查询客户运营数据列表
     * @return
     */
    List<CustomOperateVO> operateList();

    /**
     * 客户运营数据列表条件查询
     * @param operateQueryDTO
     * @return
     */
    PageVO<CustomOperateVO> getOperateList(CustomOperateQueryDTO operateQueryDTO);

    /**
     * 查询所有客户
     * @return
     */
    List<YxCsOperatePushCustEntity> findAll();

    /**
     * 根据标签查询客户
     * @param tagIds
     * @return
     */
    List<YxCsOperatePushCustEntity> findByCustTagId(List<Long> tagIds);

    /**
     * 查询商品列表
     * @return
     */
    List<YxCsPushProductEntity> productList();

    /**
     * 商品列表条件查询
     * @param productQueryDTO
     * @return
     */
    List<YxCsPushProductEntity> getProductList(ProductQueryDTO productQueryDTO);

    /**
     * 点击发送修改运营状态
     * @param operateId
     * @param operateStatus
     */
    void updateStatus(Long operateId,Long operateStatus);

    /**
     * 客户运营发送记录
     * @return
     */
    void migrateData(List<Long> operateIds);

}
